import axios from 'axios';
import Router from "@/router";
import router from "@/router";

const request = axios.create({
    baseURL: 'http://localhost:8080', // 请求的基础路径
    timeout: 30000 // 超时时间
});

// request 拦截器
// 可以自动发送前对请求做一些处理
// 比如统一设置token，对请求参数统一加密
request.interceptors.request.use(config => {
    config.headers["Content-Type"] = "application/json;charset=UTF-8";
    // 使用 localStorage
    let user = localStorage.getItem("honey-user") ? JSON.parse(localStorage.getItem("honey-user")) : {};
    if (user && user.token) {
        config.headers["token"] = user.token; // 给请求头加上token
    }
    return config;
}, error => {
    console.error('request error:', error);
    return Promise.reject(error);
});

// response 拦截器
// 对响应数据做些处理
request.interceptors.response.use(
    response => {
        let res = response.data;
        // 兼容服务器端返回字符串数据
        if (typeof res === 'string') {
            try {
                res = res ? JSON.parse(res) : res;
            } catch (e) {
                console.error('JSON解析错误:', e);
                return Promise.reject(new Error('服务器返回数据格式错误'));
            }
        }
        // 权限检查
        if (res && typeof res.code === 'number') {
            if (res.code === 401) {
                router.push('/login');
                return Promise.reject(new Error('未授权，请登录'));
            } else if (res.code === 403) {
                router.push('/403');
                return Promise.reject(new Error('权限不足'));
            } else if (res.code !== 200) {
                return Promise.reject(new Error('请求失败，请稍后再试'));
            }
        }
        return res;
    }, error => {
        console.error('response error:', error);
        // 更详细的错误处理
        if (error.response) {
            // 服务器返回了错误响应
            console.error('服务器错误响应:', error.response.data);
        } else if (error.request) {
            // 请求已发出但没有收到响应
            console.error('请求错误:', error.request);
        } else {
            // 其他错误
            console.error('请求配置错误:', error.message);
        }
        return Promise.reject(error);
    }
);


export default request;
// import axios from 'axios'
// import Router from "@/router";
//
// const request = axios.create({
//     baseURL: 'http://localhost:8080',//请求的基础路径
//     timeout: 30000//超时时间
// })
// // request 拦截器
// //可以自动发送前对请求做一些处理
// //比如统一设置token，对请求参数统一加密
// request.interceptors.request.use(config => {
//     config.headers["Content-Type"] = "application/json;charset=UTF-8";
//     let user = JSON.parse(locLstorage.getItem("honey-user")||'{}')
//     //let user=locLstorage.getItem("honey-user") ? JSON.parse(locLstorage.getItem("user")) : null;
//     config.headers["token"] = user.token //给请求头加上token
//     return config;
// }, error => {
//     console.error('request error:' + error)
//     return Promise.reject(error);
// });
// // response 拦截器
// //对响应数据做些事
// //比如，如果权限不够，跳转到403页面
// request.interceptors.response.use(
//     response => {
//         let res = response.data;
//         //兼容服务器端返回字符串数据
//         if (typeof res === 'string') {
//             res = res ? JSON.parse(res) : res;
//         }
//         if (res.code === 401) {
//             //跳转到登录页面
//             Router.push('/login');
//         }
//         return res;
//     }, error => {
//         console.error('response error:' + error)
//         return Promise.reject(error);
//     }
// )
// ;
//
// export default request;
